#ifndef CONNECTION_H
#define CONNECTION_H

/*
* MYSQL数据库的操作
*/

#include<string>
#include<mysql/mysql.h>
#include<ctime>
#include<iostream>

using namespace std;

#define LOG(str) \
	std::cout << __FILE__<<" : "<<__LINE__<<" "<<\
	__TIMESTAMP__<<" : "<<str<<std::endl

// 数据库操作类
class Connection
{
public:
	// 初始化数据库连接
	Connection();
	// 释放数据库连接资源
	~Connection();
	// 连接数据库
	bool connect(string ip, unsigned short port, string user, string password,
		string dbname);
	// 更新操作 insert、delete、update
	bool update(string sql);
	// 查询操作 select
	MYSQL_RES* query(string sql);

	//刷新一下连接的起始的空闲时间点
	void refreshAliveTime() { _alivetime = clock(); }

	// 返回存活的时间
	clock_t getAliceTime() { return clock() - _alivetime; }

	MYSQL* getConnection() { return _conn;}

private:
	MYSQL* _conn; // 表示和MySQL Server的一条连接
	clock_t _alivetime;	//记录进入空闲状态后的存活时间
};


#endif